package com.breeze.components.redis.lock;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * redis 分布式锁注解
 *
 * @author breeze
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface RedissonLock {

  /**
   * key前缀
   *
   * @return key的前缀
   */
  String prefix();

  /**
   * springEl 表达式
   *
   * @return 表达式
   */
  String[] key();

  /**
   * 锁的时间，默认-1，不等待直接失败,redisson默认也是-1
   *
   * @return 单位秒
   */
  long time() default -1;

  /**
   * 等待锁的时间单位，默认秒
   *
   * @return 单位
   */
  TimeUnit unit() default TimeUnit.SECONDS;
}
